package hao.itheima.config;


import hao.itheima.interceptor.DemoInterceptor;
import hao.itheima.interceptor.LoginCheckInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 配置类
 */
// 注意: 位置不要方法引导类的外面
@Configuration // 生命当前类是是一个配置类, 等价与@Component, 也是@Compeonent的衍生注解,跟@Service是一样的
public class WebConfig implements WebMvcConfigurer {

    @Autowired
    private DemoInterceptor demoInterceptor; // 没有Bean对象, 可能就是类的位置问题

    //依赖注入
    @Autowired
    private LoginCheckInterceptor loginCheckInterceptor;

    //注册拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
//        registry.addInterceptor(demoInterceptor).addPathPatterns("/**");
        // addInterceptor: 设置要拦截什么路径, excludePathPatterns : 排除要拦截的路径
//        registry.addInterceptor(demoInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
        // /** : 代表任意级任意路径,  /* 代表一级任意路径
        //只注释一行, 让拦截器失效, 直接将下面的一行,进行注释掉
        //registry.addInterceptor(demoInterceptor).addPathPatterns("/*").excludePathPatterns("/login");


        //如果这里排除了, login, 就不需要拦截器的这一步:
        /**
         *  if (URI.contains("login")) {
         *             //放行
         *             return true;  // 只是return true即可, 这就是不同之处
         *         }
         *         也可以留着, 当做双重校验,
         */
        //registry.addInterceptor(loginCheckInterceptor).addPathPatterns("/**").excludePathPatterns("/login");

    }
}
